/*
题目描述
一个数如果恰好等于它的因子之和，这个数就被称为“完数”。例如，6的因子为1、2、3，而6=1+2+3，因此6是“完数”。找出1000之内的所有完数，并输出。

输入
无

输出
每一个完数一行。在每一行中，首先输出这个完数的值，再输出一个冒号，之后从小到大输出这个完数的所有因子，在每个因子前输出一个空格。
请注意行尾输出换行。
*/
#include <stdio.h>
int main()
{
    // 变量
    // i：遍历1000以内的所有数
    // sum：记录i的因子之和
    for (int i = 1; i <= 1000; i++)
    {
        int sum = 0;
        for (int j = 1; j < i; j++)
        {
            if (i % j == 0)
            {
                sum += j;
            }
        }
        if (sum == i)
        {
            printf("%d:", i);
            // 输出i的所有因子
            for (int j = 1; j < i; j++)
            {
                if (i % j == 0)
                {
                    printf(" %d", j);
                }
            }
            printf("\n");
        }
    }
    return 0;
}